package com.xbongbong.pro.statistic.enums;

import com.xbongbong.i18n.util.I18nMessageUtil;
import lombok.Getter;

/**
 * 数值类型枚举
 * @author zcp
 * @date 2019/2/19 9:25
 * @since v1.0
 * @version v1.0
 */
@Getter
public enum ValueTypeEnum {

	//------------------------数值型：不区分类型，包含了int、double、string等所有数值------------------------
	/**
	 * 单个值类型
	 */
	VALUE_TYPE(100, "enum.valueType.name.value_type"),
	//------------------------int型------------------------
    /**
     * int类型数值
     */
    VALUE_INT(200, "enum.valueType.name.value_int"),
	//------------------------double型------------------------
    /**
     * 非金额的double类型数值
     */
    VALUE_DOUBLE(300, "enum.valueType.name.value_double"),
	//------------------------金额型：需要考虑万元开关等情况------------------------
	/**
	 * 金额类型数值，单位一般是“元”（首页会关联“万元开关”，单位要根据设定的来定）
	 */
	VALUE_MONEY(400, "enum.valueType.name.value_money"),

	//------------------------数组型------------------------
	/**
	 * array类型
	 */
	ARRAY_TYPE(500, "enum.valueType.name.array_type"),
	
	UNKNOWN(404, "enum.valueType.name.unknown");
	
    /**
     * 枚举值 --
     */
    private final int code;

    /**
     * 枚举信息--中文名称
     */
    private final String name;

    /**
     * 构造一个<code>ValueTypeEnum</code>枚举对象
     *
     * @param code  枚举Code
     * @param name  枚举名称
     */
	ValueTypeEnum(int code, String name) {
		this.code = code;
		this.name = name;
	}

	/**
	 * 通过枚举<code>code</code>获得枚举
	 *
	 * @param code
	 * @return ReturnTypeEnum
	 */
	public static ValueTypeEnum getByCode(Integer code) {
		for (ValueTypeEnum cacheCode : values()) {
			if (code.equals(cacheCode.getCode())) {
				return cacheCode;
			}
		}
        return UNKNOWN;
	}

	public String getName() {
		return I18nMessageUtil.getMessage(name);
	}
}
